package fr.lip6.move.care;

import org.eclipse.xtend2.lib.StringConcatenation;
import org.eclipse.xtext.xbase.lib.Functions.Function0;

/**
 * @author pstl-team
 */
@SuppressWarnings("all")
public class CompileResult {
  public static CompileResult EMPTY_RESULT = new Function0<CompileResult>() {
    public CompileResult apply() {
      StringConcatenation _builder = new StringConcatenation();
      CompileResult _compileResult = new CompileResult(_builder, "EMPTY_ID", false);
      return _compileResult;
    }
  }.apply();
  
  /**
   * Le CharSequence resultant de la generation
   */
  private CharSequence charSequenceResult;
  
  /**
   * l'id unique de l'element genere a travers tous le diagramme
   */
  private String eltID;
  
  /**
   * Un element doit etre ajoute dans la sequence principale
   * si il n'est inclut dans aucun autre et qu'il represente un
   * un element existant dans CARE. Il sera alors ajouter a la BlockList
   * principale du Main (voir utilisation de la classe Main dans le package
   * programs de CARE). Par exemple, une declaration de methode n'as pas
   * d'equivalent en CARE.
   */
  private Boolean isAddableToMainSequence;
  
  public CompileResult(final CharSequence charSequenceResult, final String eltID, final boolean isAddableToMainSequence) {
    this.charSequenceResult = charSequenceResult;
    this.eltID = eltID;
    this.isAddableToMainSequence = Boolean.valueOf(isAddableToMainSequence);
  }
  
  /**
   * ** GETTERS **
   */
  public CharSequence getCharSequenceResult() {
    return this.charSequenceResult;
  }
  
  public String getEltID() {
    return this.eltID;
  }
  
  public Boolean getIsAddableToEntryPoint() {
    return this.isAddableToMainSequence;
  }
}
